﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using Ext.Net;
using ENT.GP.Core.Core;
using ENT.GP.Core.Autenticacion;
using entgp.Code;
using ENT.GP.Core.Mail;
using ENT.GP.Core;

namespace entgp.Usuarios
{
    public partial class wucUsuarios : ControlesUsuario
    {
        private int aux;
        public int IdEmp
        {
            get
            {
                int idEmpresa=0;
                if (Session["CodigoEmpSelect2"]!=null)
                    int.TryParse(Session["CodigoEmpSelect2"].ToString(), out idEmpresa);
                return (idEmpresa);

            }
            set
            {
                Session["CodigoEmpSelect2"] = value;

            }
        }


        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
  
            }
        }
        internal void Mostrar(string operacion,int id,Boolean ifUpdateGrid)
        {
            var empActivar = Empresas.Get(this.IdEmp);
            hidSiglasEmpresa.SetValue(empActivar.Codigo);
            hidIfUpdateGrid.SetValue(ifUpdateGrid); 

            hidOperacion.SetValue(operacion);
            hidId.SetValue(id);

            RolesLookup.InvalidateCache();
            StoreRol.DataSource = RolesLookup.GetNameValueList(this.IdEmp);
            StoreRol.DataBind();


            if (operacion == "Editar")
            {
                Usuario objUser = Usuario.GetUsuario(id);
                txtApellido.SetValue(objUser.Apellido);
                txtEMail.SetValue(objUser.Mail);
               
                txtNombre.SetValue(objUser.Nombre);
                txtTelefono.SetValue(objUser.Telefono);

             
                txtUsuario.SetValue(objUser.Login.Substring(4));

                txtUsuario.Enabled = false;
                cbxRol.SetValue(objUser.IdRol);
                txtClave.SetValue(objUser.Clave);
                txtUsuario.FieldLabel = "<b>Usuario:</b>&nbsp;&nbsp;" + objUser.Login.Substring(0,4);

            }
            else
            {
                txtUsuario.Enabled = true;
          
                txtUsuario.FieldLabel = "<b>Usuario:</b>&nbsp;&nbsp;" + empActivar.Codigo + "_";
            }
            winMiCuenta.Show();
        }

        private static void CallRefreshGridParent()
        {
            X.Js.AddScript("#{StoreUsuario}.load();");
        }

        protected void btnGuardar_Click(object sender, DirectEventArgs e)
        {
            try
            {
                string sTxtMail ="";
                Usuario usuario =null;
                int id,IdRol;
                int.TryParse(e.ExtraParams["hidId_prm"], out id);//int.TryParse(hidId.Text, out id);
                string sOper = e.ExtraParams["hidOperacion_prm"];//hidOperacion.Text
                if (sOper == "Editar")
                {
                    usuario = Usuario.GetUsuario(id);
                }
                else if (sOper == "Nuevo")
                {
                    usuario = Usuario.NewUsuario();
                    usuario.IDEmpresa = this.IdEmp;
                    usuario.Login = e.ExtraParams["hidSiglasEmpresa_prm"] + "_" + e.ExtraParams["txtUsuario_prm"];
                }
                usuario.Apellido = e.ExtraParams["txtApellido_prm"];//txtApellido.Text;
                usuario.Clave = e.ExtraParams["txtClave_prm"];//txtClave.Text;

                int.TryParse(e.ExtraParams["cbxRol_prm"], out IdRol);//cbxRol.SelectedItem.Value
                usuario.IdRol = IdRol;

                usuario.Mail     = e.ExtraParams["txtEMail_prm"];//txtEMail.Text;
                usuario.Nombre   = e.ExtraParams["txtNombre_prm"];// txtNombre.Text;
                usuario.Telefono = e.ExtraParams["txtTelefono_prm"];//txtTelefono.Text;
               
                usuario = usuario.Save();

                btnGuardar.Disabled = true;
                sTxtMail = string.Format(ManejadorRecursos.GetRecurso("MsgConfirmMail") , usuario.Nombre, usuario.Login, usuario.Clave);
                UtilP.MostrarNotificacion("El usuario se guardo correctamente","Registro de Usuarios",MessageBox.Icon.INFO );
                aux = 0;
                Mail.EnviarMail("", usuario.Mail, "Registro de Cuenta", sTxtMail);
                aux = 1;

                if (e.ExtraParams["hidIfUpdateGrid_prm"] == "true")//(hidIfUpdateGrid.Text
                {
                    //Invocar methodo de ventana padre
                    //((Usuarios)this.Page).DataBindSearch();
                    CallRefreshGridParent();
                }
                winMiCuenta.Hide();


            }
            catch (Exception ex)
            {
                Util.RegistarLog(ex.Message);
                if (aux==0)
                {
                    winMiCuenta.Hide();
                }
            }
        }
        protected void txtUsuario_Change(object sender, DirectEventArgs e)
        {
            try
            {
               
                //if (Usuario.VerificarLogin(this.hidSiglasEmpresa.Value.ToString() + "_"+txtUsuario.Text,this.IdEmp))
                if (Usuario.VerificarLogin(e.ExtraParams["hidSiglasEmpresa_prm_t"] + "_" + e.ExtraParams["txtUsuario_prm_t"], this.IdEmp))
                {
                    UtilP.MostrarNotificacion("El usuario ya existe", "Registro de Usuarios", MessageBox.Icon.WARNING);
                    txtUsuario.Text = "";
                }
            }
            catch (Exception ex)
            {
                Util.RegistarLog(ex.Message);
            }
        }

    }
}